class Solution {//leetocde526——优美的排列
private:
    void dfs(int pos,int n){
        if(pos==n+1) {
            ret++;
            return ;
        }
        for(int i=1;i<=n;i++)
        {
            if(check[i]==false&&(i%pos==0||pos%i==0)){
                check[i]=true;
                dfs(pos+1,n);
                check[i]=false;
            }
        }
    }
public:
    int countArrangement(int n) {
        dfs(1,n);
        return ret;
    }
private:
    int ret;
    bool check[16];
};